package edu.kit.csl.cratylus.io;

import edu.kit.csl.cratylus.datatypes.Corpus;

/**
 * This class uses the GoF design pattern Abstract Factory. For each different
 * possible value of the parameter ibmModelLoader there is a subclass of this
 * class, which is then able to load the initial corpus from alignmentFile.
 */
public interface CorpusFactory {
	
	/**
	 * This is a factory method (GoF design pattern) which produces corpus
	 * instances. The strategies of loading it differ among the implementing
	 * subclasses, but the location of the resources have to be stored in the 
	 * parameter <code>alignmentFile</code>.
	 * 
	 * @return a corpus loaded from alignmentFile
	 */
	Corpus createCorpus();
}
